Embodiments of the present invention relate generally to interaction between applications in computer systems, and more particularly to techniques that enable efficient interaction between applications that can have quality of service constraints.
Information technology provides automated systems to meet the needs of organizations, but factors such as the complexity of the systems, changing markets, increasing competitive pressures, and evolving customer needs are creating demand for more flexible and efficient systems. A standardized approach to designing and building enterprise applications, known as Service Oriented Architecture (SOA), has been introduced to meet this demand. SOA facilitates the development of enterprise applications as modular web services that can be easily integrated and reused. SOA defines how the services interact, so that different applications can be integrated. Applications can communicate with the services via Web protocols such as HTTP. SOA defines service interfaces in terms of protocols and features. Applications can invoke services by exchanging messages, e.g., a request message from the application to a server that implements the service, and a response message from the server back to the application after executing the service. Services can also be invoked by other services. Messages can be sent and received via channels, e.g., network connections. A “binding” establishes the connection between an SOA composite application and the external world. There are two types of binding components: services, which provide the outside world with an entry point to the SOA composite application and describe the protocols that can communicate with the service (for example, SOAP/HTTP or a JCA adapter), and references, which enable messages to be sent from the SOA composite application to external services in the outside world. Services use “endpoints” to access the channels and send/receive messages. An endpoint is an association between a binding and a network address that may be used to communicate with a service. Thus an endpoint indicates a specific address for accessing a service using a specific protocol and data format.
Each service provides an operation, such as a bank account deposit. An application or another service calls an appropriate Application Programming Interface (API) function of the SOA system to invoke the service by passing messages according to the protocol for accessing the service. This process of invoking a service is also referred to herein as “invocation” of the service. Data can be included in the invocation message in accordance with a data format specified by metadata associated with the binding.
SOA applications can be implemented using “orchestration” to compose “composite” applications that invoke services. In one example, Business Process Execution Language (“BPEL”) is a standardized representation of processes, and the SOA system provides a process engine or manager that enables users to design and execute BPEL processes that invoke the services. The details of the application and services, and the formats of the data that is exchanged, e.g., between different BPEL processes in a composite application, are described by metadata associated with corresponding portions of the services and applications, such as data types associated with bindings.